﻿#ifndef TABLEWINDOW_H
#define TABLEWINDOW_H
#include<QWidget>
class QTableView;
class QSpinBox;
class QStandardItemModel;
class QLabel;
//表格窗口
class TableWindow:public QWidget
{
	Q_OBJECT
public:
	TableWindow(QWidget* parent = nullptr);
	//获取表格视图
	 QTableView& Table();
	 //获取表格模型
	 QStandardItemModel& Table_model();
	 //获取微调框
	 QSpinBox& SpinBox();
	 //获取列宽
	 const int columnWidth();
	 //获取行高
	 const int rowHeight();
public slots:
	 //清空全部
	 void clearAll();
	 //清空数据
	 void clearData();
	 //清空表格
	 void clearTable();
	 //插入数据
	 void insertData(const QStringList& str);
	 //设置水平标题
	 void setHorizontalHeading(const QStringList& str);
	 void setHorizontalHeading();
	 //设置垂直标题
	 void setVerticalHeading(const QStringList& str);
	 void setVerticalHeading();
	 //设置列宽
	 void setColumnWidth(const int w);
	 void setColumnWidth();
	 //设置标题水平对齐
	 void setHorizontalAlignment(Qt::Alignment alignment);
	 //设置行高
	 void setRowHeight(const int h);
	 //设置标题垂直对齐
	 void setVerticalAlignment(Qt::Alignment alignment);
	 //设置所有文本位置
	 void setTextAlignmentAll(Qt::Alignment alignment);
	 //显示表格
	 void showTable();
	 //运行
	 void initRun();
protected:
	//设置微调框
	const bool setSpinBox();
	//设置总数和页数
	void setTable();
	//设置所有文本位置
	void setTextAlignmentAll();
private:
	QTableView* m_Table = nullptr;
	QSpinBox* m_SpinBox = nullptr;
	QStandardItemModel* m_Table_model = nullptr;
	QLabel* m_Info = nullptr;
	QList<QStringList> m_data;
	Qt::Alignment m_TextAlignment= Qt::AlignLeft;
	QStringList m_HorizontalHeading;//水平标题
	QStringList m_VerticalHeading;//垂直标题
	int m_onePagenum = 0;//一页数量
	int m_pageNum = 0;//总页数
};
#endif 
